import subprocess  # 导入subprocess模块，用于执行外部命令和处理输入输出

def run_command_real_time(command):  # 定义一个函数，接收命令字符串作为参数
    saveout = ''  # 初始化一个空字符串，用于存储输出内容
    try:  # 开始一个try块，用于捕获可能发生的异常
        process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)  # 使用Popen执行命令并捕获输出和错误

        while True:  # 开始一个无限循环，用于实时读取输出
            output = process.stdout.readline()  # 逐行读取标准输出
            if output == '' and process.poll() is not None:  # 如果输出为空且进程已结束，退出循环
                break
            if output:  # 如果读取到输出
                print(output.strip())  # 打印输出，去掉首尾空格
                saveout += output.strip() + '\n'  # 将输出添加到saveout中，行尾加换行符

        return_code = process.poll()  # 获取命令的返回码
        if return_code != 0:  # 如果返回码不是0，表示命令执行失败
            error_output = process.stderr.read()  # 读取标准错误输出
            print(f"命令执行失败，返回码: {return_code}")  # 打印返回码
            print(f"错误信息: {error_output.strip()}")  # 打印错误信息

    except Exception as e:  # 捕获任何异常
        print(f"发生错误: {e}")  # 打印错误信息
    return saveout  # 返回saveout中存储的输出内容


if __name__ == "__main__":  # 检查是否以主程序的形式运行代码
    command = (  # 构建要执行的命令字符串
        "yt-dlp --list-subs "  # 使用yt-dlp列出视频的可用字幕
        "--proxy http://127.0.0.1:10809 "  # 指定HTTP/HTTPS/SOCKS代理
        "--cookies D:\Downloads\www.youtube.com_cookies.txt "  
        "https://www.youtube.com/watch?v=b7ZC01afWPw"  
    )

    res = run_command_real_time(command)  # 调用函数并传入命令，将返回的输出存储在res中
    reslines = res.split('\n')  # 将res的内容按行分割成一个列表
    ch = ''  # 初始化一个空字符串，用于存储找到的中文字幕信息
    for i, v in enumerate(reslines):  # 遍历reslines中的每一行
        if 'Chinese (Simplified)' in v:  # 如果该行包含“Chinese (Simplified)”
            ch = v  # 将其存储在ch中
    print('-'*10)  
    print(ch)  # 打印找到的中文字幕信息
